2.2 定制指令
2.2.1 名词解析
- 定制指令:区别于天琴内置语音指令的指令。集成端可通过AiLit自由定制的指令,享有最高触发优先级,触发后将会回调到配套的监听器中交由集成端处理。定制指令在唤醒后、交互中,才能够使用。
2.2.2 CommandWord
CommandWord是定制指令的实体类,其标识字段为指令说法,一种指令说法对应CommandWord。
2.2.3 静态注册
当指令较为固定时,集成端可将其写入文件中:
文件预设路径:module根目录/src/main/assets/custom_cmd.xml
//文件模板如下
<?xml version="1.0" encoding="utf-8"?>
<root>
<cmd name="/customize/video/start">
<word name="把录像开了"/>
<word name="把录像打开"/>
</cmd>
</root>
在保证预设路径下已经放置好静态指令后,在合适的时机(通常为语音就绪后)调用如下接口注册即可:
AiLitContext.getSpeechManager().addCommandWordFromXml(OnCommandTriggeredListener listener)
Tips:
- 入参为定制指令响应监听器,请勿传空否则指令无法处理;
- 回调方法的返回结果类型(ControlResponse),请见 4.1 ControlResponse 一节;
2.2.4 动态注册
当指令动态变化时,集成端可使用动态方法注册:
AiLitContext.getSpeechManager().addCommandWord(List<CommandWord> lstOfCommand, OnCommandTriggeredListener listener)
CommandWord 参考使用方式/格式:
new CommandWord("打开设置", "adapter.cmd.word.open_setting")
//command格式, 以"."连接, 描述明确: 来源.标识.类别.执行命令
Tips:
- 入参为定制指令响应监听器,请勿传空否则指令无法处理;
- 回调方法的返回结果类型(ControlResponse),请见 4.1 ControlResponse 一节;
2.2.5 动态注销
集成端可在不需要某条定制指令时,动态将其注销。但因为天琴内部原因,单独传说法或者指令标识都无法彻底注销,请保证入参中的实体类均包含说法(word)、指令标识(command)两个字段:
AiLitContext.getSpeechManager().removeCommandWord(List<CommandWord> )